######################### Exerccio 8 #############################################################################
###################################################################################################################

Galileu estava Certo?

##1-Partindo do tutorial Ajuste de Polinmios, avalie se um polinmio de terceiro grau  um melhor modelo para 
##descrever os dados do experimento de Galileu. A equao para este modelo :
##                     y=a +bx+cx^2+dx^3


#As alturas de lanamentos e as distncias percorridas obtidas por Galileu so:
init.h = c(600, 700, 800, 950, 1100, 1300, 1500)
h.d = c(253, 337, 395, 451, 495, 534, 573)

# Grfico de disperso:
plot(h.d~init.h)
mod1 = lm(h.d~init.h)

#O comando para ajustar a equao da parbola :
mod2 = lm(h.d~init.h+I(init.h^2))

## Verificando o resumo do modelo da parbola:
summary(mod2)

## Ajustando a equao de terceiro grau:
mod3= lm(h.d~init.h+I(init.h^2)+I(init.h^3))
mod3

## Verificando o resumo do modelo da equao de terceiro grau:
summary(mod3)

##Comparando os trs modelos:
anova(mod1,mod2, mod3)
abline(mod1)
cf.m2 = coef(mod2)
curve(cf.m2[1]+cf.m2[2]*x+cf.m2[3]*x^2, add=T, lty=2, col="red")
cf.m3 = coef(mod3)
curve(cf.m3[1]+cf.m3[2]*x+cf.m3[3]*x^2+cf.m3[4]*x^3,add=T, lty=4,col="blue")


### R: O modelo da equao de terceiro grau,  melhor, pois  significativo (p= 0.0071503) e apresenta menos resduos
## do que o modelo da equao de segundo grau.

####################################################################################################
## 2- Experimente todas as variveis disponveis no conjunto de dados Massa ao Nascer e Dados da me
## para chegar ao melhor modelo de previso da massa de bebs ao nascer.

## Lendo arquivo babies.txt##
bebes= read.table("babies.txt",header=T)
head(bebes)
tail(bebes)
summary(bebes)
str(bebes)

## Eliminando as observaes com dados faltantes:

bebes=bebes[bebes$bwt!=999 & bebes$gestation!=999 & bebes$parity!=9 & bebes$age!=99 & bebes$weight!=999 & bebes$height!=99 & bebes$smoke!=9,] 
str(bebes)

## Ajuste de regresses lineares simples
gest= lm(bwt~gestation, data=bebes)
age= lm(bwt~age, data= bebes)
parity= lm(bwt~as.factor(parity), data=bebes)
height = lm(bwt~height, data= bebes)
weight= lm (bwt~weight, data= bebes)
smoke= lm(bwt~as.factor(smoke), data=bebes)

## Grficos

par(mfrow=c(2,3))

plot(bwt~gestation, data=bebes, main= "Babies", xlab= "Tempo de gestao (dias)")
abline(gest,col="red")ylab= "peso do beb (onas)"
anova(gest) ## p<0.05, menos resduos do que H0.

plot(bwt~age, ylab= "peso do beb (onas)", main= "Babies", data=bebes, xlab= "Partos anteriores")
abline(age, col="red")
anova (age) ## p> 0.05


plot(bwt~parity, ylab= "peso do beb (onas)", main= "Babies", data=bebes, xlab= "Partos anteriores")
abline(parity, col="red")
anova(parity) ## p> 0.05

plot(bwt~height,ylab= "peso do beb (onas)", main= "Babies", data=bebes, xlab= "Altura da me")
abline(height, col="red")
anova(height) ## p< 0.05

plot(bwt~weight,ylab= "peso do beb (onas)", main= "Babies", data=bebes, xlab= "Peso da me")
abline(weight,col="red")
anova(weight) ## p< 0.05

plot(bwt~smoke,ylab= "peso do beb (onas)", main= "Babies", data=bebes, xlab= "Fumante")
abline(smoke, col="red")
anova(smoke) ## p< 0.05

anova(gest, smoke, height, weight, parity, age)

summary(gest)
summary(smoke)
summary(age)
summary(weight)
summary(height)
summary(parity)


## R: As anlises de regresso simples mostram que o tempo de gestao tem relao positiva com o peso do beb ao nascer e  a varivel que mais influencia no peso. Depois, por ordem de mais influente 
## so: o fator fumante, com relao negativa (o peso do beb tende a ser menor se a me fuma) e  altura e peso da me, com relao positiva com o peso do beb.


## Anlise de regresso mltiplas

##Fatores que mais influenciaram o peso nas anlise simples: 

##Gestao e fumo *** Residuos:  309075
g.s.mod= lm (bwt~gestation+as.factor(smoke), data=bebes)
g.s.mod
anova(g.s.mod)
plot(g.s.mod)
summary (g.s.mod)

##Gestao, altura e fumo *** Residuos: 296261

total.mod1= lm(bwt~ gestation + height +smoke, data=bebes)
total.mod1
anova(total.mod1)
summary(total.mod1)

#Gestao, altura, peso e fumo *** Resduos= 294808, menos resduos que o anterior, porm menos um grau de liberdade.
total.mod= lm(bwt~ gestation + height + weight +smoke, data=bebes)
total.mod
anova(total.mod)
summary(total.mod)

#Gestao, fumo e peso *** Resduos= 302060. mais resduos do que considerando a altura.
total.mod3=lm(bwt ~gestation + smoke + weight, data=bebes)
total.mod3
anova(total.mod3)

# Todos os anteriores mais partos anteriores *** Resduos=292412, diminui, porm no muito.
total.mod4=lm(bwt ~gestation + smoke + weight +height  + as.factor(parity), data=bebes)
total.mod4
anova(total.mod4)

#Todos + idade *** Resduos = 292409, o valor dos resduos praticamente no foi alterado.
total.mod5=lm(bwt ~gestation + age + smoke + weight +height  + as.factor(parity) , data=bebes)
total.mod5
anova(total.mod5)

##Todos + idade *** Resduos = 292409, o valor dos resduos praticamente no foi alterado. Porm o SSda idade variou com a posio no modelo.
total.mod6=lm(bwt ~ height +gestation  + smoke + weight + as.factor(parity)+ age , data=bebes)
total.mod6
anova(total.mod6)

## R: O melhor modelo da massa do beb ao nascer considera o tempo de gestao, o fato da me ser fumante ou no, e  altura da me.
# O tempo de gestao e a altura da me tm relao positiva, enquanto o fator fumante apresenta relao negativa.
